//
// Created by 覃州 on 2024/1/18.
//

#ifndef CRCANON_ASPECT_MANAGE_H
#define CRCANON_ASPECT_MANAGE_H

#include "time_aspect.h"
#include "function_execute_number.h"
#include <memory>
#include <utility>

namespace {

using namespace Canon;

template <typename... Ap, typename F, typename... Args>
void AspectAssembly(F&& f, Args&&... args)
{
    invoke<Ap...>(std::forward<F>(f), std::forward<Args>(args)...);
}

template <typename... Ap, typename F, class U, class V, typename... Args>
void AspectAssembly(const U a, V b, F&& f, Args&&... args)
{
    invoke<Ap...>(std::forward<F>(f), a, b, std::forward<Args>(args)...);
}

} // namespace

#endif // CRCANON_ASPECT_MANAGE_H
